package com.itheima.dao;

import com.github.pagehelper.Page;
import com.itheima.pojo.Permission;
import com.itheima.pojo.Role;

import java.util.List;
import java.util.Set;

/**
 * @author wgq
 * @date 2019-10-21 10:23
 * 权限管理 持久层
 */
public interface PermissionDao {
    /**
     * 根据角色ID查询权限
     * @param roleId
     * @return
     */
    Set<Permission> findByRoleId(Integer roleId);

    /**
     * 权限列表查询展示
     * @param s
     * @return
     */
    Page<Permission> selectByCondition(String s);

    /**
     * 根据权限名称查看  权限是否已存在
     * @param name
     * @return
     */
    Integer selectByName(String name);

    /**
     * 根据权限keyword查看  权限是否已存在
     * @param keyword
     * @return
     */
    Integer selectByKeyword(String keyword);

    /**
     * 权限管理 新增权限
     * @param permission
     */
    void add(Permission permission);

    /**
     * 判断当前权限是否关联到角色
     * @param id
     * @return
     */
    Integer findCountByPermissonId(Integer id);

    /**
     * 权限管理 --> 删除权限
     * @param id
     */
    void deletePermissonById(Integer id);

    /**
     * 编辑 -- 查询当前行的权限用于回显
     * @param id
     * @return
     */
    Permission findById(Integer id);

    /**
     * 编辑 权限 --提交修改
     * @param permission
     */
    void edit(Permission permission);

    /**
     * 编辑修改过程中判断权限名称是否已存在
     * @param permission
     * @return
     */
//    Integer findPermissionDaoName(Permission permission);

    /**
     * 编辑修改过程中判断权限keyword是否已存在
     * @param permission
     * @return
     */
    Integer findPermissionDaoKeyword(Permission permission);

    /**
     * 查询所有权限项，用于角色新建窗口显示
     * @return
     */
    List<Permission> findAllPermission();
}
